package com.cleaningcloud.cld.service;

import com.cleaningcloud.cld.domain.HumanResourcesBI;
import com.cleaningcloud.cld.domain.MaterialsBI;
import com.cleaningcloud.cld.domain.vo.CldBiDataVo;

import java.util.List;
import java.util.Map;

/**
 * @className 资产物资BI业务接口类
 * @description //TODO
 * @author Shaw
 * @date: 2025-03-06 16:33
 * @param: //TODO
 */
public interface IMaterialsBIService {

    /**
     * @Author Shaw
     * @Description 库存统计表格
     * @date: 2025-03-06 16:37
     * @param: //TODO
     */
    List<MaterialsBI> getStockStatisticsTable() ;

    /**
     * @Author Shaw
     * @Description 物资类别库存数量占比图
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getCommodityTypeRate();

    /**
     * @Author Shaw
     * @Description 按当月查询物资资产成本(日走势图)
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    CldBiDataVo getMaterialsInfoCostDayImg();

    /**
     * @Author Shaw
     * @Description 采购订单商品类型库存数量占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getProcureCommodityTypeRate();

    /**
     * @Author Shaw
     * @Description 采购订单不同状态订单数表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    Map<String, Object> getProcureNumberInfoTable();

    /**
     * @Author Shaw
     * @Description 物资品类消耗占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getMaterialsConsumeRate();

    /**
     * @Author Shaw
     * @Description 物资品类消耗数量表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getMaterialsConsumeTable();

    /**
     * @Author Shaw
     * @Description 项目业态物资调拨单数量占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getMaterialsAllocateRate();

    /**
     * @Author Shaw
     * @Description 配送订单不同状态订单数表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    Map<String, Object> getMaterialsAllocateNumberInfoTable();

    /**
     * @Author Shaw
     * @Description 三级库商品分类库存数量占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getLevelStockCommodityTypeRate(Long wareType);

    /**
     * @Author Shaw
     * @Description 根据类型ID获取三级库存数量/金额占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    Map<String, Object> getLevelCommodityTypeRateByCommodityTypeId(MaterialsBI materialsBI);

    /**
     * @Author Shaw
     * @Description 根据类型ID获取三级库存数量/金额TOP10
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getLevelCommodityTypeTableByCommodityTypeId(MaterialsBI materialsBI);

    /**
     * @Author Shaw
     * @Description 按当月查询物资资产成本(月累计表格)
     * @date: 2025-09-09 9:45
     * @param: //TODO
     */
    Map<String, Object> getMaterialsInfoCostTable();

    /**
     * @Author Shaw
     * @Description 资产维修金额占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getAssetsRepairRate();

    /**
     * @Author Shaw
     * @Description 根据项目/区域查询资产状态信息表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getProjectAssetsInfoTable(Long paramType);

    /**
     * @Author Shaw
     * @Description 根据资产查询资产状态信息列表
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getAssetsInfoList();

    /**
     * @Author Shaw
     * @Description 按项目查询物资品类消耗数量图
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    CldBiDataVo getProjectRegionMaterialsTypeConsumeImg();

    /**
     * @Author Shaw
     * @Description 按项目区域汇总物资品类消耗占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getMaterialsTypeConsumeRateByProjectRegion(Long commodityTypeId);

    /**
     * @Author Shaw
     * @Description 按物资消耗数量TOP10
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getMaterialsConsumeTopTable(Long commodityTypeId);

    /**
     * @Author Shaw
     * @Description 按项目查询物资品类消耗数量表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getProjectMaterialsTypeConsumeTable();

    /**
     * @Author Shaw
     * @Description 当月采购日度订单数量走势图
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    CldBiDataVo getProcureOrderByDayImg();

    /**
     * @Author Shaw
     * @Description 按供应商查询采购订单状态数量/金额表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getSupplierProjectOrderStatusInfoTable();

    /**
     * @Author Shaw
     * @Description 按物资品类区分采购数量占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getCommodityTypeProduceNumberRate();

    /**
     * @Author Shaw
     * @Description 按物资品类区分采购金额占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getCommodityTypeProduceMoneyRate();

    /**
     * @Author Shaw
     * @Description 按物资品类查询采购订单状态数量/金额表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getSupplierCommodityTypeProjectOrderStatusInfoTable();

    /**
     * @Author Shaw
     * @Description 配送订单项目区域调拨数量占比
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getProjectRegionAllocateRate();

    /**
     * @Author Shaw
     * @Description 当月采购日度订单数量走势图
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    CldBiDataVo getAllocateOrderByDayImg();

    /**
     * @Author Shaw
     * @Description 按项目物资品类查询配送订单信息表格
     * @date: 2025-04-09 11:57
     * @param: //TODO
     */
    List<MaterialsBI> getCommodityTypeAllocateOrderStatusInfoTable();
}
